package veterinaria.manager;

import geral.manager.GenericManager;
import geral.manager.UtilManager;
import geral.util.FacesUtil;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import javax.ejb.EJB;
import javax.enterprise.context.ConversationScoped;
import javax.inject.Inject;
import javax.inject.Named;

import paginacao.ListaPaginada;
import br.com.sgc.entities.hotelaria.UnidadeHospedagem;
import br.com.sgc.enuns.TipoOrdenacao;
import br.com.sgc.session.GenericSession;

@Named
@ConversationScoped
public class UnidadeHospedagemManager extends GenericManager implements Serializable{
		

	private static final long serialVersionUID = 530346131580559332L;

	@Inject private UtilManager utilManager;
	
	@EJB private GenericSession<UnidadeHospedagem> unidadeSession;
	
	private UnidadeHospedagem unidade = new UnidadeHospedagem();
	
	private List<UnidadeHospedagem> unidades = new ArrayList<UnidadeHospedagem>();
	
	private Boolean showPanelCadastro;

	
	public String list(){
		unidades = new ListaPaginada<UnidadeHospedagem>(unidadeSession, utilManager.getSegurancaManager().getUsuarioLogado().getClinica().getId(), unidade, 5, "id", TipoOrdenacao.ASC);
		showPanelCadastro = false;
		return "formUnidade";
	}
	
	public String prepareSave(){
		showPanelCadastro = true;
		unidade = new UnidadeHospedagem();
		return "formUnidade";
	}
	
	public String save(){
		try {
			unidade.setClinica(utilManager.getSegurancaManager().getUsuarioLogado().getClinica());
			unidade.setDisponivel(true);
			unidadeSession.save(unidade);
			FacesUtil.mensInfo("Unidade salva com sucesso");
			unidade = new UnidadeHospedagem();
			return list();
		} catch (Exception e) {
			FacesUtil.mensErro(e.getMessage());
			return null;
		}
	}
	
	public String prepareUpdate(){
		unidade = unidadeSession.findById(UnidadeHospedagem.class, unidade.getId(), true);
		showPanelCadastro = true;
		return "formUnidade";
	}
	
	public String update(){
		try {
			unidade.setClinica(utilManager.getSegurancaManager().getUsuarioLogado().getClinica());
			unidadeSession.update(unidade);
			unidade = new UnidadeHospedagem();
			FacesUtil.mensInfo("Unidade atualizado com sucesso");
			return list();
		} catch (Exception e) {
			FacesUtil.mensErro(e.getMessage());
			return null;
		}
	}

	public GenericSession<UnidadeHospedagem> getUnidadeSession() {
		return unidadeSession;
	}

	public void setUnidadeSession(GenericSession<UnidadeHospedagem> unidadeSession) {
		this.unidadeSession = unidadeSession;
	}

	public UnidadeHospedagem getUnidade() {
		return unidade;
	}

	public void setUnidade(UnidadeHospedagem unidade) {
		this.unidade = unidade;
	}

	public List<UnidadeHospedagem> getUnidades() {
		return unidades;
	}

	public void setUnidades(List<UnidadeHospedagem> unidades) {
		this.unidades = unidades;
	}

	public Boolean getShowPanelCadastro() {
		return showPanelCadastro;
	}

	public void setShowPanelCadastro(Boolean showPanelCadastro) {
		this.showPanelCadastro = showPanelCadastro;
	}
}